﻿Imports PTIC_GestionExcel
Imports Actuariat
Imports PTIC_Util
Imports PTIC_GestionBDD
Imports OMANE.Modules.TauxGarantis.moteurTauxGaranti2
Imports System.Drawing
Imports OMANE.Common.Model.Interfaces
Imports OMANE.Common.Model.Parametrage

Public Class gestionExcelTxGar2OMANE
    Inherits AbstractGestionExcel

    Protected m_universTxGarantis As ModelTauxGarantis
    Protected _paramEtd As ParametresList

    Public Sub New(ByRef Succes As Boolean, ByVal univers As ModelTauxGarantis, ByVal paramColl As ParametresList)
        MyBase.New(Succes)
        Me.m_universTxGarantis = univers
        Me._paramEtd = paramColl
        'Remplissage de l'onglet résumant les caractéristiques du fichier
        OuvrirFichierExistant(csteEmplacementParametrage & "OMANE_resTauxGarantiMethode2.xls", _
                                      "Param_fichier")
    End Sub

    Public Sub ExcelAffParamFichier()
        ChangerDeFeuilleActive("Param_fichier")
        EcrireCellule(Today, 6, 5)
        EcrireCellule(m_universTxGarantis.ListeTraitements.TraitTbleEncours.FichierBDD.NomComplet, 11, 3)
        Dim i As Integer = 17
        For Each c As Correspondance In m_universTxGarantis.ListeTraitements.TraitTbleEncours.ListeChampsSortie.Values
            EcrireCellule(c.description, i, 4)
            EcrireCellule(IIf(c.typeChEntree = DefinitionsTypes.typeChEntreeMapping.CONSTANT, _
                                      "''" & c.chBDD.Nom & "'", _
                                     c.chBDD.Nom), i, 5)
            i = i + 1
        Next
    End Sub
    Public Sub ExcelAffParamTranches()
        ChangerDeFeuilleActive("Param_Corresp_Tranches")
        Dim dtble_descTrAge As DataTable = CType(m_universTxGarantis.ListeTraitements.TraitTbleEncoursPrep1.ListeChampsSortie.Item(desctrAge),  _
                                                 ChampsTraitTranche).TableTranches
        Dim dtble_descTrCapi As DataTable = CType(m_universTxGarantis.ListeTraitements.TraitTbleEncoursPrep1.ListeChampsSortie.Item("Tranche de capitaux"),  _
                                                ChampsTraitTranche).TableTranches

        'Création d'un modèle d'affichage pour les tableaux
        Dim implTableauSimple As IImplTableau = New ImplTableauSimple()
        setImplTableau(implTableauSimple)
        creerTableau("Correspondances associées aux tranches d'âge", _
                     dtble_descTrAge, _
                     8, _
                     3)
        creerTableau("Correspondances associées aux tranches d'âge", _
                     dtble_descTrCapi, _
                     8, _
                     7)
        setImplTableau(New ImplTableauDefaut())

    End Sub
    Public Sub ExcelAffSegmentation()

        ChangerDeFeuilleActive("Param_fichier")
        Dim implTableauSimple As IImplTableau = New ImplTableauSimple()
        Dim tab As New DataTable
        tab.Columns.Add("NomVariable", Type.GetType("System.String"))
        Dim listVarSeg As IDictionary(Of String, Correspondance) = m_universTxGarantis.Segmentation.Retenue
        For Each corresp As Correspondance In listVarSeg.Values
            Dim r As DataRow = tab.NewRow()
            r(0) = corresp.description
            tab.Rows.Add(r)
        Next
        setImplTableau(implTableauSimple)
        creerTableau("Liste des variables de segmentation", _
                     tab, _
                     39, _
                     4)
        setImplTableau(New ImplTableauDefaut())
    End Sub
    Public Sub ExcelAffExtraction()
        ChangerDeFeuilleActive("Extraction")
        Dim tbleExtraction As DataTable = m_universTxGarantis.ListeTraitements.TraitMoteurMethode2.scenarioCentral.resultats.TableEntreeEnrichie.Copy
        tbleExtraction.Columns.Add("NumSegment", GetType(Integer))
        tbleExtraction.Columns("NumSegment").SetOrdinal(0)
        Dim i As Integer = 1
        For Each r As DataRow In tbleExtraction.Rows
            r("NumSegment") = i
            i += 1
        Next
        creerTableau("Variables de segmentation", tbleExtraction, 1, 1)
    End Sub
    Public Sub ExcelAffParamSpecifiquesModele2()
        ChangerDeFeuilleActive("Alim_BDD_generation")
        With m_universTxGarantis.ListeTraitements.TraitMoteurMethode2

            EcrireCellule(.nbGenProj, 11, 8)

            Dim nbPretsAssuGen1 As Double
            If .nbPretsAssuGen1.methodeCalcul = IParamSpecifiqueModProj.typeCalcul.Personnalisé Then
                nbPretsAssuGen1 = .nbPretsAssuGen1.valeurPerso
            Else
                nbPretsAssuGen1 = .nbPretsAssuGen1.sommeBase
            End If

            EcrireCellule(nbPretsAssuGen1, 13, 8)
            EcrireCellule(.croissPopAssuNb, 15, 8)
            EcrireCellule(.croissCapIni, 17, 8)

            Dim capitauxInitiaux As Double
            If .capitauxInitiaux.methodeCalcul = IParamSpecifiqueModProj.typeCalcul.Personnalisé Then
                capitauxInitiaux = .capitauxInitiaux.valeurPerso
            Else
                capitauxInitiaux = .capitauxInitiaux.sommeBase
            End If
            EcrireCellule(capitauxInitiaux, 19, 8)
        End With

        With m_universTxGarantis.ListeTraitements.TraitMoteurMethode2
            ChangerDeFeuilleActive("Compte de résultat BDD_gen")
            EcrireCellule(IIf(.filtreSegment = 0, "TOUS", .filtreSegment), 5, 5)
            EcrireCellule(IIf(.filtreGeneration = 0, "TOUS", .filtreGeneration), 6, 5)
            EcrireCellule(IIf(.Comptes.HasPMrente, "O", "N"), 7, 5)
            EcrireCellule(IIf(.Comptes.HasPMdc, "O", "N"), 8, 5)
            EcrireCellule(IIf(.Comptes.HasPPRC, "O", "N"), 9, 5)
        End With
    End Sub
    Public Sub ExcelAffSelectionMedicale()
        ChangerDeFeuilleActive("Selection medicale Pf")
        Dim dtble_SelMedic As DataTable = m_universTxGarantis.ListeParametres.Sel_medic.Valeurs
        creerTableau("Sélection médicale", dtble_SelMedic, 1, 2)
        'Ajouter, dans la première colonne, les formule de calcul permettant d'ajouter la clé
        'Pour toutes les lignes de la table
        For i As Integer = 1 To dtble_SelMedic.Rows.Count
            Dim ChaineCar As String = ""
            For j = 1 To dtble_SelMedic.Columns.Count - 1
                ChaineCar = ChaineCar & Chr(65 + j) & i + 1 & "&"
            Next
            ChaineCar = "=" & Left(ChaineCar, ChaineCar.Length - 1)
            EcrireCellule(ChaineCar, i + 1, 1)
        Next
        'Mettre à jour les formules permettant d'avoir la clé dans la sélection médicale du segment courant
        Dim nbSegsSelMedic As Integer = m_universTxGarantis.ListeParametres.Sel_medic.ListeSegments.Count
        If nbSegsSelMedic > 0 Then
            Dim chaineFormule As String = ""
            For i As Integer = 1 To nbSegsSelMedic
                chaineFormule = chaineFormule & "$G$" & i + 8 & "&"
            Next
            chaineFormule = "=" & Left(chaineFormule, chaineFormule.Length - 1)
            ChangerDeFeuilleActive("Selection medicale")
            EcrireCellule(chaineFormule, 2, 1)
        End If
    End Sub

    Public Sub CreeFeuilleOMANE(ByVal nomFeuille As String, ByVal titre As String)
        creerNouvelleFeuille(nomFeuille)
        HauteurLigne(1, 33.75)
        colorieRange(Color.FromArgb(0, 51, 102))
        HauteurLigne(2, 2.25)
        colorieRange(Color.Red)
        HauteurLigne(3, 33.75)
        colorieRange(Color.FromArgb(192, 192, 192))
        LargeurColonne(1, 10.71)
        colorieRange(Color.Black)
        AfficherGridLines(False)

        'Ecriture de l'entête outil taux garanti
        EcrireCellule("Outil de calcul de la rémunération des distributeurs", 1, 2)
        SelectionRange(1, 2, 1, 11)
        changeCouleurTexteRange(Color.White)
        _MonRange.Font.Size = 14
        _MonRange.Font.Bold = True
        _MonRange.VerticalAlignment = Microsoft.Office.Interop.Excel.XlVAlign.xlVAlignCenter
        _MonRange.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenterAcrossSelection

        'Ecriture du titre
        EcrireCellule(titre, 3, 2)
        SelectionRange(3, 2, 3, 11)
        Me.changeCouleurTexteRange(Color.Black)
        _MonRange.Font.Size = 14
        _MonRange.Font.Bold = True
        _MonRange.VerticalAlignment = Microsoft.Office.Interop.Excel.XlVAlign.xlVAlignCenter
        _MonRange.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenterAcrossSelection
    End Sub

End Class